package main

import (
	"log"

	"github.com/Unknwon/goconfig"
)

//高级使用方法
func main() {
	// 多文件覆盖加载
	cfg, err := goconfig.LoadConfigFile("../conf.ini", "conf2.ini")
	if err != nil {
		log.Fatalf("无法加载配置文件：%s", err)
	}
	value, err := cfg.GetValue("", "key_default")
	if err != nil {
		log.Printf("无法获取键值（%s）:%v", "key_default", err)
	}
	log.Printf("%s > %s: %v", goconfig.DEFAULT_SECTION, "key_default", value)
	err = cfg.AppendFiles("conf3.ini")
	if err != nil {
		log.Fatalf("无法加载配置文件：%s", err)
	}
	//配置文件重载
	err = cfg.Reload()
	if err != nil {
		log.Fatalf("重新加载失败")
	}
	vBool := cfg.MustBool("must", "bool404", true)
	log.Printf("%s > %s: %v", "must", "bool404", vBool)
	//配置文件变量解析 %(var)s
	value, err = cfg.GetValue("", "search")
	if err != nil {
		log.Printf("无法获取键值（%s）：%s", "search", err)
	}
	log.Printf("%s > %s: %v", goconfig.DEFAULT_SECTION, "search", value)
	//子section中的键覆盖父section
	value, err = cfg.GetValue("parent.child", "age")
	if err != nil {
		log.Printf("无法获取键值（%s）：%s", "age", err)
	}
	log.Printf("%s > %s: %v", "parent.child", "age", value)
	value, err = cfg.GetValue("parent.child", "sex")
	if err != nil {
		log.Printf("无法获取键值（%s）：%s", "sex", err)
	}
	log.Printf("%s > %s: %v", "parent.child", "sex", value)
	//自增键名
	aiValue, err := cfg.GetSection("auto increment")
	if err != nil {
		log.Printf("无法获取section（%s）：%s", "auto increment", err)
	}
	log.Printf("%s : %v", "auto increment", aiValue)
}
